package org.research.sdbx.datetime;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public interface TimeInstanceFactory {

	public abstract TimeInstance getDate();
	public abstract TimeInstance getDate(TimeInstance timeInstance);
	public abstract TimeInstance getDate(Date date);
	public abstract TimeInstance getDate(Calendar calendar);
	public abstract TimeInstance getDate(TimeZone timeZone);
	
	public abstract TimeInstance getTimeInstance();
	public abstract TimeInstance getTimeInstance(TimeInstance timeInstance);
	public abstract TimeInstance getTimeInstance(Date date);
	public abstract TimeInstance getTimeInstance(Calendar calendar);
	public abstract TimeInstance getTimeInstance(TimePrecision timePrecision);
	public abstract TimeInstance getTimeInstance(TimeZone timeZone);
	public abstract TimeInstance getTimeInstance(String value);
	public abstract TimeInstance getTimeInstance(TimeZone timeZone, TimePrecision timePrecision);
	public abstract TimeInstance getTimeInstance(String value, TimeZone timeZone);
	
	public abstract TimeInstance getTimeInstance(int year, Month month, int dayOfMonth);
	public abstract TimeInstance getTimeInstance(int year, Month month, int dayOfMonth, int hourOfDay, int minutes, int seconds);
	public abstract TimeInstance getTimeInstance(int year, Month month, int weekOfMonth, DayOfWeek dayOfWeek);

}
